ーーーーHashTableの場合の使い方ーーーー
Public Hash As New Hashtable()
Dim a As New test("inaba", "minoru")
Dim s As New test()
Hash.Add("t", a) '登録
s = CType(h.Item("t"), test) ’検索
s.show()
ーーーーその2ーーーー
If Hash.ContainsKey(検索するキー) Then があるか?ないか?
Dim datas As New data()
datas = CType(Hash.Item(検索するキー), data)
TextBox2.Text = datas.no + vbCrLf + datas.kana + vbCrLf + datas.name
Else
TextBox2.Text = "該当なし"
End If
ーーーーArrayListの場合の使い方ーーーー
Dim Ar As New ArrayList()
Dim a As New test("inaba", "minoru")
Dim b As New test("testname", "testdata")
Dim s As New test()
Ar.Add(a)
Ar.Add(b) 追加
Ar.Insert(1, New test("aaa","iii")) 番号の位置に挿入
Ar.Item(1) = New test("s", "ss") 番号の位置を入れ替え
s = CType(Ar.Item(0), test) オブジェクトの再構成
s.show()
ーーーーその2ーーーー
If Hash.Contains(検索文字列など) Then があるか?ないか?
int = Hash.IndexOf(検索文字列など) のある位置
TextBox2.Text = Hash.Item(int) 値の取り出し
Else
TextBox2.Text = "該当なし"
End If
ーーーーーーーーーーーーーーーーーーーーーー
int = Object.countで総レコード数が出ます 0から始まる数+1
ーーーーーーーーーーーーーーーーーーーーーー
ーーーー一括保存の仕方ーーーー
Dim Formatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
Dim FileStream As System.IO.FileStream
FileStream = New System.IO.FileStream("Test.txt", IO.FileMode.Create)
Formatter.Serialize(FileStream, Hash)
FileStream.Close()
ーーーー読み出し方ーーーー
Dim Formatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
Dim FileStream As System.IO.FileStream
FileStream = New System.IO.FileStream("Test.txt", IO.FileMode.Open)
Hash = DirectCast(Formatter.Deserialize(FileStream), Hashtable)
FileStream.Close()
ーーーー上記のコードで使用するクラスーーーー
<Serializable()>Public Class test ’つけないと一括で保存読み出しができない
Public name As String
Public data As String
Public Sub New()
End Sub
Public Sub New(ByVal a As String, ByVal b As String)
name = a
data = b
End Sub
Public Sub show()
MsgBox(name + " " + data)
End Sub
End Class
ーーーーファイルを最後まで読むーーーー
Dim sr As New System.IO.StreamReader("Data.CSV", System.Text.Encoding.GetEncoding(932))
'内容を一行ずつ読み込む
While sr.Peek() > -1
End While
'閉じる
sr.Close()
ーーーー配列の並び替えーーーー
Dim x(5) As Integer
x(0) = 1
x(1) = 4
x(2) = 2
Array.Sort(x)
Dim a As Integer
For a = 0 To 5
Console.WriteLine(x(a))
Next
ーーーーArrayListのソートーーーー
'普通に並び替え
Object.Sort()
'文字列の長さで並び替える
Dim comp As New LengthComparer()
Object.Sort(comp)
Dim a As Integer
For a = 0 To Object.Count - 1
Console.WriteLine(Object.Item(a))
Next
Public Class LengthComparer
'IComparerインターフェイスを実装する
Implements System.Collections.IComparer
'xがyより小さいときはマイナスの数、大きいときはプラスの数、
'同じときは0を返す
Public Function Compare(ByVal x As Object, _
ByVal y As Object) As Integer Implements IComparer.Compare
Return CType(x, String).Length - CType(y, String).Length
End Function
End Class
ーーーーArrayListの変数にオブジェクトを入れた場合のソートーーーー
Dim comp As New LengthComparer()
Object.Sort(comp)
Public Class LengthComparer
'IComparerインターフェイスを実装する
Implements System.Collections.IComparer
'xがyより小さいときはマイナスの数、大きいときはプラスの数、
'同じときは0を返す
Public Function Compare(ByVal x As Object, _
ByVal y As Object) As Integer Implements IComparer.Compare
Return CType(x.no, Int32) - CType(y.no, Int32)
End Function
End Class
<Serializable()> Public Class data
Public name As String
Public kana As String
Public no As Int32
End Class